package com.car.service.impl;

import com.car.mapper.AdminMapper;
import com.car.pojo.Admin;
import com.car.pojo.LoginInfo;
import com.car.service.AdminService;
import com.car.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * 管理员服务实现类
 */
@Slf4j
@Service
public class AdminServiceImpl implements AdminService {

    @Autowired
    private AdminMapper adminMapper;

    @Override
    public LoginInfo login(Admin admin) {
        //1. 调用mapper接口, 根据用户名和密码查询管理员信息
        Admin a = adminMapper.selectByUsernameAndPassword(admin);

        //2. 判断: 判断是否存在这个管理员, 如果存在, 组装登录成功信息
        if(a != null){
            log.info("管理员登录成功, 管理员信息: {}", a);
            //生成JWT令牌，包含用户类型标识
            Map<String, Object> claims = new HashMap<>();
            claims.put("id", a.getId());
            claims.put("username", a.getUsername());
            claims.put("userType", 3); // 3表示管理员类型
            String jwt = JwtUtils.generateToken(claims);

            return new LoginInfo(a.getId(), a.getUsername(), a.getName(), jwt);
        }

        //3. 不存在, 返回null
        return null;
    }

    @Override
    public Admin getInfo(Integer id) {
        return adminMapper.selectById(id);
    }
}